package com.study.basetype.util;

import okhttp3.*;
import okio.BufferedSink;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 * @author flwu
 * @date 2020/3/21 5:41 PM
 * @MOTTO 保持空杯和敬畏
 */
//@Component
//public class OkHttpUtilBackup implements RequestHttpInterface {
//
//    private static final Logger log = LoggerFactory.getLogger(OkHttpUtilBackup.class);
//
//    @Autowired
//    private OkHttpClient okHttpClient;
//
//    @Autowired
//    private OkHttpClient okHttpsClient;
//
//    /**
//     * 默认header参数，如果传了自定义header会覆盖默认的
//     */
//    private Map<String, String> defaultHeader = new HashMap<String, String>() {
//        {
//            put("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
//            put("Accept-Encoding", "gzip, deflate");
//            put("Connection", "keep-alive");
//            put("Accept", "*/*");
//        }
//    };
//
//    @Override
//    public String HttpGet(String url) {
//        String body = null;
//        Headers header1 = Headers.of(defaultHeader);
//        Request request = new Request.Builder().url(url).headers(header1).build();
//        try {
//            Response response = okHttpClient.newCall(request).execute();
//            if (response.isSuccessful()) {
//                return response.body().string();
//            }
//        } catch(Exception e) {
//            log.error("url:" + url + ", http get request error");
//        }
//        return body;
//    }
//
//    @Override
//    public String httpGet(String url, Map<String, String> params) {
//        String body = null;
//        Headers header1 = Headers.of(defaultHeader);
//        String urlParams = doGetParamsToStr(url, params);
//        Request request = new Request.Builder().url(urlParams).headers(header1).build();
//        try {
//            Response response = okHttpClient.newCall(request).execute();
//            if (response.isSuccessful()) {
//                body = response.body().toString();
//            }
//        } catch (Exception e) {
//            log.error(e.getMessage());
//        }
//        return body;
//    }
//
//    @Override
//    public String HttpGet(String url, Map<String, String> params, Map<String, String> headers) {
//        String body = null;
//        String urlParams = doGetParamsToStr(url, params);
//        for(Map.Entry<String, String> entry : headers.entrySet()) {
//            defaultHeader.put(entry.getKey(), entry.getValue());
//        }
//        Headers header1 = Headers.of(defaultHeader);
//        Request request = new Request.Builder().url(urlParams).headers(header1).build();
//        try {
//            Response response = okHttpClient.newCall(request).execute();
//            if (response.isSuccessful()) {
//                body = response.body().string();
//            }
//        } catch (Exception e) {
//            log.error(e.getMessage());
//        }
//        return body;
//    }
//
//    @Override
//    public String HttpsGet(String url) {
//        String body = null;
//        Request request = new Request.Builder().url(url).build();
//        try {
//            Response response = okHttpsClient.newCall(request).execute();
//            if (response.isSuccessful()) {
//                return response.body().toString();
//            }
//        } catch(Exception e) {
//            log.error("url:" + url + ", http get request error");
//        }
//        return body;
//    }
//
//    @Override
//    public String httpsGet(String url, Map<String, String> params) {
//        return null;
//    }
//
//    @Override
//    public String HttpsGet(String url, Map<String, String> params, Map<String, String> headers) {
//        return null;
//    }
//
//    @Override
//    public String httpPost(String url, Map<String, String> params) {
//        return null;
//    }
//
//    @Override
//    public String HttpPost(String url, Map<String, String> params, Map<String, String> headers) {
//        return null;
//    }
//
//    @Override
//    public String httpsPost(String url, Map<String, String> params) {
//        return null;
//    }
//
//    @Override
//    public String HttpsPost(String url, Map<String, String> params, Map<String, String> headers) {
//        return null;
//    }
//
//
//    private String doGetParamsToStr(String url, Map<String, String> params) {
//        /*if (params != null && params.keySet().size() > 0) {
//            boolean firstFlag = true;
//            Iterator iterator = params.entrySet().iterator();
//            while(iterator.hasNext()) {
//                Map.Entry entry = (Map.Entry<String, String>) iterator.next();
//                if (firstFlag) {
//                    url += "?" + entry.getKey() + "=" + entry.getValue();
//                    firstFlag = false;
//                } else {
//                    url += "&" + entry.getKey() + "=" + entry.getValue();
//                }
//            }
//        }*/
//        return url;
//    }
//}
